// 语言第四章 函数
//函数名大写，构造函数
//函数就可以构造一个类
//js 早期没有class 关键字， 但并不影响它做java的传统面向对象编程
//函数是一等对象，可以用来构造对象，
//JS 其实没有类，但并不影响
function Cat(name){
    //给一组对象添加属性
this.name=name;
//内存开销，复杂的多，入栈 分配堆内存
/*this.makeSound=function(){
    console.log('喵喵喵');
}*/
}
//对象的构造函数
//函数也是对象
//js 函数对象有prototype属性
//共有的方法放在prototype属性
Cat.prototype.eat=function(){
    console.log('吃')
}
Cat.prototype.makeSound=function(){
    console.log('喵喵喵');
}
Cat.sayhi=function(){
    console.log('你好');
}
//同一组对象，公共的类模板
/*var xm=new Cat('小黑');
xm.sayhi()不能调用
console.log(xm.name);
const xh=new Cat('小文');
console.log(xm==xh);
console.log(xm.constructor);//判断两个对象是兄弟
//判断对象是某个类的实例
//typeof [] object
console.log(xm instanceof Cat);
//Object 即是对象又是函数
let a={};//对象字面量的构造函数 Object()
let obj=new Object();
console.log(obj);*/
console.log(Cat.prototype);